package com.spring.demo4.factory;

import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.core.type.AnnotationMetadata;

/**
 * 通过spring容器api的方式直接向容器中注册bean
 *
 * @author vhans
 */
public interface MyImportBeanDefinitionRegistrar {

    /**
     * @param importingClassMetadata  AnnotationMetadata类型,用来获取被@Import标注的类的所有注解信息
     * @param registry                BeanDefinitionRegistry是一个接口,内部提供了注册bean的各种方法
     * @param importBeanNameGenerator BeanDefinitionRegistry接口,内部有一个方法,用来生成bean名称
     */
    default void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
                                         BeanDefinitionRegistry registry,
                                         BeanNameGenerator importBeanNameGenerator) {
        registerBeanDefinitions(importingClassMetadata, registry);
    }

    default void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
                                         BeanDefinitionRegistry registry) {
    }
}
